const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
  transpileDependencies: true,
  publicPath: "./",
  configureWebpack: {
    devtool: "source-map",
  },
  devServer: {
    port: 8000,
    // proxy: {
    //   "/api": {
    //     target: "http://60.205.171.41:18889",
    //     changeOrigin: true,
    //     pathRewrite: {
    //       "^/api": "",
    //     },

    //     ws: true, // 启用 WebSocket 支持（虽然不是 SSE，但部分代理需要）
    //     onProxyReq: (proxyReq) => {
    //       // 设置 SSE 所需的长连接头（可选）
    //       proxyReq.setHeader("Connection", "keep-alive");
    //     },
    //     onProxyRes: (proxyRes) => {
    //       // 确保代理响应头包含 EventStream 的 Content-Type
    //       proxyRes.headers["Content-Type"] = "text/event-stream";
    //       proxyRes.headers["Cache-Control"] = "no-cache";
    //     },
    //   },
    // },

    proxy: {
      "/api": {
        target: "http://60.205.171.41:18889",
        changeOrigin: true,
        pathRewrite: { "^/api": "" },
        ws: true, // 保留 WebSocket 支持（若需要）

        // 新增：禁用代理缓冲，强制流式传输
        // 注意：需根据代理库版本选择配置方式
        // 方式 1（适用于 http-proxy-middleware@1.x+）
        // agent: new http.Agent({ keepAlive: true }), // 保持长连接
        // 方式 2（强制关闭响应缓冲，核心配置）
        // 重要：设置 buffer 为 false 禁止代理缓存响应数据
        // 注意：该配置可能因代理库版本不同而失效，需确保依赖正确
        // 安装：npm install http-proxy-middleware@latest
        // 配置：
        onProxyReq: (proxyReq) => {
          // 显式设置长连接和事件流所需的头（后端若已设置可忽略）
          proxyReq.setHeader("Connection", "keep-alive");
          proxyReq.setHeader("Accept", "text/event-stream");
        },
        // 禁止代理缓冲响应（核心修复）
        // 使用 http-proxy-middleware 的 secure 选项配合 agent
        // 或直接通过配置对象传递 { buffer: false }
        // 注意：需通过完整的代理配置对象传递参数
        // 正确写法：
        ...(process.env.NODE_ENV === "development" && {
          // 以下配置针对 http-proxy-middleware 的底层参数
          // 参考：https://github.com/chimurai/http-proxy-middleware#proxycontext-config
          // 设置 agent 保持长连接，避免代理断开流
          agent: new (require("http").Agent)({ keepAlive: true }),
          // 禁止缓冲响应数据（关键！）
          buffer: false, // 重要：允许流式传输
        }),
      },
    },
  },
});
